x86/mm: Flag mem_events caused by foreign domains
authorAndres Lagar-Cavilla <andres@lagarcavilla>
Tue, 6 Dec 2011 20:10:32 +0000 (20:10 +0000)
committerAndres Lagar-Cavilla <andres@lagarcavilla>
Tue, 6 Dec 2011 20:10:32 +0000 (20:10 +0000)
Add a new flag for mem events, as consumers might need to discriminate
foreign domain-caused from guest-caused events. The vcpu field of an
event is bogus from a consumer p.o.v. for foreign domain-caused events.

Also assert that we shouldn't be pausing foreign vcpus.

Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
xen/arch/x86/mm/mem_event.c
xen/include/public/mem_event.h

index d484f1f50dfcc3107a94931501a98fcaaa90d548..17b8471c46d9f83da784e7ede5341513f3508c1c 100644 (file)
@@ -143,6 +143,12 @@ void mem_event_put_request(struct domain *d, struct mem_event_domain *med, mem_e
     front_ring = &med->front_ring;
     req_prod = front_ring->req_prod_pvt;
 
+    if ( current->domain != d )
+    {
+        req->flags |= MEM_EVENT_FLAG_FOREIGN;
+        ASSERT( !(req->flags & MEM_EVENT_FLAG_VCPU_PAUSED) );
+    }
+
     /* Copy request */
     memcpy(RING_GET_REQUEST(front_ring, req_prod), req, sizeof(*req));
     req_prod++;
index 0097b34a33d1bbaff7d2f5416d27abea7446bf6e..0b91a7634103a10048f67ea5e1b1feca520be4ee 100644 (file)
@@ -39,6 +39,7 @@
 #define MEM_EVENT_FLAG_VCPU_PAUSED  (1 << 0)
 #define MEM_EVENT_FLAG_DROP_PAGE    (1 << 1)
 #define MEM_EVENT_FLAG_EVICT_FAIL   (1 << 2)
+#define MEM_EVENT_FLAG_FOREIGN      (1 << 3)
 
 /* Reasons for the memory event request */
 #define MEM_EVENT_REASON_UNKNOWN     0    /* typical reason */